﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data;
using SSPharma.Common;
using SSPharma.Biz.DanhMuc;
using System.Collections.ObjectModel;
using SSPharma.Biz.HeThong;

namespace SSPharma.View.HeThong
{   
    /// <summary>
    /// Interaction logic for ucMH_LapYeuCauMuaHang.xaml
    /// </summary>
    public partial class ucDS_DM_ReponseMenu : UserControl
    {
        #region valible
        private DataTable p_tListData, p_tDataCauTruc;
        private IList<string> dsTenTruong;
        private IList<string> ListKhoachinh;
        private string GroupName;
        private string Orderby = "";
        private BizResponseMenu _BizResponseMenu;
        #endregion

        #region contructor
        /// <summary>
        /// User: TAMNN 21/07/2014
        /// Mục đích: contructor khởi tạo
        /// </summary>
        public ucDS_DM_ReponseMenu()
        {
            InitializeComponent();
            _BizResponseMenu = new BizResponseMenu();
        }
        #endregion

        #region Event
        /// <summary>
        /// User: TAMNN 21/07/2014
        ///  Mục đích: Sự kiện load dữ liệu của usercontroll
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            //lấy format grid
            GetFormatGrid(txtFormName.Text);
            //load dữ liệu
            GetDataResponseMenu();
        }
        /// <summary>
        /// User: TAMNN 21/07/2014
        ///  Mục đích: edit dữ liệu với sự kiện doubleclick
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void g_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            try
            {
                this.ev_SuaDuLieu();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); }
        }
        /// <summary>
        /// User: TAMNN 02/08/2014
        /// Mục đích: hàm double cho lưới con bên trong lưới lớn
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void p_gLuoiCon_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            try
            {
                this.ev_SuaDuLieu();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); }
        }
        /// <summary>
        /// User: TAMNN 22/07/2014 
        /// Mục đích: đánh số thứ tự cho lưới
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void g_Data_LoadingRow(object sender, DataGridRowEventArgs e)
        {
            if(!string.IsNullOrEmpty(GroupName))
                return;
            e.Row.Header = (e.Row.GetIndex() + 1).ToString();
        }
        #endregion

        #region Utility function
        /// <summary>
        /// User: TAMNN 21/07/2014
        ///  Mục đích: Hàm lấy cấu trúc định dạng của lưới
        /// </summary>
        /// <param name="_tenform"></param>
        private void GetFormatGrid(string _tenform)
        {
            try
            {
                dsTenTruong = new List<string>();
                ListKhoachinh = new List<string>();
                Orderby = "";
                GroupName = string.Empty;
                p_tDataCauTruc = _BizResponseMenu.ft_DSDinhDangLuoi(_tenform);// lay cau truc bang hien thi
                GroupName = p_tDataCauTruc.Rows[0]["Nhom"].ToString();
                Orderby = p_tDataCauTruc.Rows[0]["SapXep"].ToString();
                UtilityUIElement.GenerateColumns(dtgDanhMuc, p_tDataCauTruc, ref dsTenTruong, ref ListKhoachinh);
            }
            catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); 
            }

        }
        /// <summary>
        /// User: TAMNN 21/07/2014
        /// Mục đích: Lấy dữ liệu tương ứng với từng controll
        /// </summary>
        /// <param name="_tenform"></param>
        private void GetDataResponseMenu()
        {
            try
            {
                p_tListData = _BizResponseMenu.ft_GetListdata(dsTenTruong, Orderby);// lay du lieu
                if (string.IsNullOrEmpty(GroupName))
                {
                    dtgDanhMuc.DataContext = p_tListData.AsDataView();
                }
            }
            catch (Exception ex)
            { 
                MessageBox.Show(ex.Message.ToString());
            }
        }
        /// <summary>
        /// User: TAMNN 21/07/2014
        /// Mục đích: Được gọi sau khi form thêm của từng model được đóng. 
        /// </summary>
        public void Search_Form()
        {
            GetFormatGrid(txtFormName.Text);
            GetDataResponseMenu();
        }
        /// <summary>
        /// User: TAMNN 21/07/2014
        /// lấy giá trị của nhóm khóa chính tương ứng với từng model
        /// </summary>
        /// <param name="dataRow"></param>
        /// <returns></returns>
        public IList<string> LayGiaTriCuaKhoaChinh(DataRowView dataRow)
        {
            IList<string> list = new List<string>();
            foreach (var i in ListKhoachinh)
            {
                list.Add(dataRow[i] != null ? dataRow[i].ToString() : "");
            }
            return list;
        }
        #endregion

        #region Các hàm cố định

        /// <summary>
        /// User: TAMNN 21/07/2014
        /// Mục đích: Gọi khi nút sửa ở trên thanh trình đơn được click
        /// </summary>
        public void ev_SuaDuLieu()
        {
            var dataRow = (DataRowView)dtgDanhMuc.SelectedItem;
            if(dataRow == null)
                throw new System.Configuration.Provider.ProviderException("Bạn cần chọn đối tượng");
            string Id = dataRow["MaResponse"].ToString();
            if (!string.IsNullOrEmpty(Id))
            {
                var frmmethod = new frmResponMenu(Id);
                frmmethod.IdentityValue += new frmResponMenu.IdentityValues(Search_Form);
                frmmethod.Show();
            } 
        }
        /// <summary>
        /// User: TAMNN 21/07/2014
        /// Mục đích: Gọi khi nút thêm ở trên thanh trình đơn được click
        /// </summary>
        public void ev_ThemDuLieu()
        {
            var frmmethod = new frmResponMenu();
            frmmethod.IdentityValue += new frmResponMenu.IdentityValues(Search_Form);
            frmmethod.Show();
        }
        /// <summary>
        /// User: TAMNN 21/07/2014
        /// Mục đích: Gọi khi nút xóa ở trên thanh trình đơn được click
        /// </summary>
        public void ev_XoaDuLieu()
        {
            //DataRowView dataRow = (DataRowView)dtgDanhMuc.SelectedItem;
            //if (dataRow == null)
            //    throw new System.Configuration.Provider.ProviderException("Bạn cần chọn đối tượng");
            //string mesg = _BizResponseMenu.fs_DeleteData();
            //MessageBox.Show(mesg);
            //this.GetDataResponseMenu();
        }
        /// <summary>
        /// User: TAMNN 21/07/2014
        /// Mục đích: Gọi khi nút lưu ở trên thanh trình đơn được click
        /// </summary>
        public void ev_LuuDuLieu()
        {
            string t = string.Empty;
        }
        /// <summary>
        /// User: TAMNN 21/07/2014
        /// Mục đích: Gọi khi nút bỏ qua ở trên thanh trình đơn được click
        /// </summary>
        public void ev_BoQua()
        {
            var frm = new SSPharma.View.TimKiem.frmTimKiem("","","");
            frm.Show();
        }
        /// <summary>
        /// User: TAMNN 21/07/2014
        /// Mục đích: Gọi khi nút in ở trên thanh trình đơn được click
        /// </summary>
        public void ev_InDuLieu()
        {
            string t = string.Empty;
        }
        /// <summary>
        /// User: TAMNN 21/07/2014
        /// Mục đích: Gọi khi nút tìm kiếm ở trên thanh trình đơn được click
        /// </summary>
        public void ev_TimKiem()
        {
            string t = string.Empty;
        }
        #endregion

    }
     
}
